package net.hserver.admin.system.config;

import cn.hserver.core.ioc.annotation.Bean;
import cn.hserver.core.ioc.annotation.Configuration;
import cn.hserver.core.ioc.annotation.Value;
import cn.hserver.plugin.mybatis.flex.bean.MybatisConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.SQLException;

@Configuration
public class DbConfig {
    @Value("mysql.url")
    private String mySqlUrl;

    @Value("mysql.userName")
    private String mySqlUserName;

    @Value("mysql.password")
    private String mySqlPassword;

    @Value("mysql.driver")
    private String mySqlDriver;

    @Bean
    public MybatisConfig sql() throws SQLException {
        HikariDataSource ds = new HikariDataSource();
        ds.setJdbcUrl(mySqlUrl);
        ds.setUsername(mySqlUserName);
        ds.setPassword(mySqlPassword);
        ds.setDriverClassName(mySqlDriver);
        ds.setMaximumPoolSize(10);
        ds.setConnectionTimeout(3000); // 连接超时时间（毫秒）
        ds.setIdleTimeout(600000); // 空闲连接超时时间（毫秒）
        ds.setMaxLifetime(1800000); // 连接最大生命周期（毫秒）

        MybatisConfig mybatisConfig = new MybatisConfig();
        mybatisConfig.setMapUnderscoreToCamelCase(true);
        //默认数据源
        mybatisConfig.addDataSource(ds);
        //resource/mapper 全部.xml扫描
        mybatisConfig.setMapperLocations("mapper");
        //分页插件
        return mybatisConfig;
    }

}
